package com.opal.jx.service;

import com.opal.domain.R;
import com.opal.jx.entity.table.JxAssessBzcjZg;
import com.opal.jx.entity.table.JxDept;
import com.opal.jx.entity.table.JxEmp;
import com.opal.model.DataGridData;
import com.opal.system.entity.table.PKOrg;

import java.util.List;

public interface JxEmpService {

    /**
     * 查询员工表的所有数据
     * @return
     */
    public List<JxEmp> selectJxEmp();

    /**
     * 根据主键查询员工信息
     * @param id
     * @return
     */
    public JxEmp selectJxEmpById(Long id);

    /**
     * 根据条件查询员工信息
     * @param condition 查询条件对象
     * @return
     */
    public List<JxEmp> selectJxEmpByCondition(JxEmp condition);

    /**
     * 添加员工信息
     * @param jxEmp
     * @return
     */
    public int addJxEmp(JxEmp jxEmp);

    /**
     * 根据主键id修改员工信息
     * @param jxEmp jx
     * @param id 主键id，可有可无
     * @return
     */
    public int modifyJxEmpById(JxEmp jxEmp,Long ...id);

    /**
     * 根据对象condition中的属性不为null为条件查询
     * @param jxEmp  要修改的值
     * @param condition 修改条件
     * @return
     */
    public int modifyJxEmpByCondition(JxEmp jxEmp,JxEmp condition);

    /**
     * 分页获取所有的数据
     * @param page
     * @param rows
     * @return
     */
    public DataGridData<List<JxEmp>> selectJxEmpUseEayuiTableService(int page, int rows,JxEmp jxEmp);

    /**
     * 根据部门、多个岗位查询人员信息
     * @param pkDept
     * @param postId 数组对象
     * @return
     */
    public List<JxEmp> selectJxEmpByCondition(String pkDept, List<Long> postId);

    /**
     * 根据当前部门、多个岗位名称查询主管、和组长人员信息
     * @param pkDept
     * @param postIds
     * @return
     */
    List<JxEmp> selectJxEmpByPkDeptAndPostIds(String pkDept, List<Long> postIds);

    /**
     * 根据部门code(可设置为null)、所属主管工号(可设置为null)、岗位查询员工信息
     * @param pkDept
     * @param postIds
     * @return
     */
    List<JxEmp> selectJxEmpByPkDeptAndPostIds(String pkDept,String zuZhang,String postId);

    /**
     * 查询当前部门下主管管理的所有员工信息
     * @param pkDept          部门
     * @param empZhuguans    主管id
     * @param postId         岗位名称
     * @return
     */
    List<JxEmp> selectJxEmpByCondition(String pkDept, List<String> empZhuguans,Long postId);

    List<JxEmp> selectJxEmpByPkDeptAndPostNames(String pkDept, List<String> postNames);


    /**
     * 根据组织和部门查询岗位信息
     * @param pkDept
     * @param pkOrg
     * @return
     */
    Object getJxEmpPostService(String pkDept, String pkOrg);

    /**
     * 获取所有的岗位
     * @return
     */
    Object getjxPostAll();

    /**
     * 保存jxEmp员工信息
     * @param jxEmp
     * @return
     */
    R saveJxEmp(JxEmp jxEmp);

    /**
     * 修改jxEmp员工信息
     * @param jxEmp
     * @return
     */
    R updateJxEmp(JxEmp jxEmp);

    /**
     * 根据条件查询数据；
     * @param jxEmp (姓名-工号：模糊查询，)
     * @return
     */
    List<JxEmp>  queryJxempDataRefreshTable(JxEmp jxEmp);

    /**
     * 删除员工信息
     * @param jxEmp
     * @return
     */
    R deleteJxEmp(JxEmp jxEmp);

    /**
     * 通过岗位名称模糊查询员工信息
     * @param postName
     * @return
     */
    List<JxEmp> selectEmpByLikePostName(String postName,String pkDept);


    /**
     * 通过所属主管查询员工信息
     * @param empCode
     * @return
     */
    List<JxEmp> selectJxEmpByEmpZhuGuan(String empCode,Long postId);

    /**
     * 通过所属组长查询员工信息
     * @param empCode
     * @return
     */
    List<JxEmp> selectJxEmpByEmpZuZhang(String empCode,Long postId);

    /**
     * 查询所有部门
     * @return
     */
    List<JxDept> getAllJxDeptService();

    /**
     * 根据组长查询部门
     * @param pkOrg
     * @return
     */
    List<JxDept> getJxDeptByPkOrgService(String pkOrg);

    /**
     * 根据岗位id获取员工信息
     * @param postId
     * @return
     */
    List<JxEmp> getEmpByPostIdService(Long postId);

    /**
     * 根据岗位id获取总计划主管信息
     * @param postId
     * @return
     */
    List<JxAssessBzcjZg> getZhuGuanInfoService(Long postId);
}
